$.module.register("main", function () {
	var api, 
		setLyout = function () {		
		$("#main,.content").height($(window).height() - $("#header").height()-0);	
		
		//$("#menu").height($("#main .sidebar").height() - 53);
		//$("#main .content iframe").height($("#main").height() - $("#bread").height() - 53);
		$("html, body").css("overflow", "hidden");
	},
	
	navClickHandle = function (eventName, moduleId, obj) {
		if (obj.hasClass("no-sidebar")) {
			$("#main .sidebar").css("display","none");
			$("#main .content").addClass("max");
			//$("#main, #main .content").height("auto");
			//$("html").css("overflow", "auto");
			//Util.iframeAutoHeight("container");
		} else {
			$("#main .sidebar").css("display","block");
			$("#main .content").removeClass("max");
			//setLyout();
		}
	}
	
	return {
		init : function (sandbox) {
			api = sandbox;
			api.listen("nav:nav-click", navClickHandle);
		}, 
		onload : function () {
			setLyout();
		}
	};
}());

// header方法
$.module.register("header", function () {
  
    var 
	userInit = function () {
    	utils.getUserInfo(function(data) { //用户登录
    		if (data.success) {
    			_html = '' + data.userInfo.realName + ''    			
    			$("#userInfo").append(_html);
    		}
    	});
    	
		if ($(".userlist p").size() > 0) {
			$(".user a:first").addClass("change-user");  //icon_user.png
		}
	},
	
	iConfigInit = function () {
        $("#header .iconfig").click(function () {
        	var a = $(this);
            Util.addTab(a.attr("url"), a.attr("title"), a.attr("dataId"));
            return false;
        });
    },
    
    //加载菜单
    loadMenu = function() {
    	$.ajax({
    		type : 'GET',
    		dataType : 'json',
    		url : config.baseURL + 'AdminMenu/findByPid.json?parentID=0',
    		success : function(data) {
    			if(data.success) {
    				$.each(data.menuList, function(i, value) {
    					var _html = "";
    					_html += '<li class="mainlevel"><a href="javascript:void(0)" dataId="s-';
    					_html += value.id;
    					_html += '" title="';
    					_html += value.name;
    					_html += '">';
    					_html += value.name;
    					_html += '<span>&nbsp;&nbsp;&nbsp;&nbsp;</span></a></li>'; //加上箭头 图标
    					$(".nav .picList").append(_html);
    					// 异步加载二级菜单
    					//loadSubMenu(value.id);
    				});
    				initMainlevel();
    				//initNavSub();
    			} else {
    				$.messager.alert('系统提示',data.error, 'error');
    			}
    		}
    	});
    },
    
    loadSubMenu = function(superId) {
    	$.ajax({
			type : 'GET',
			dataType : 'json',
			url : config.baseURL + 'AdminMenu/findByPid.json?parentID=' + superId,
			async : false,//取消异步请求
			success : function(data) {
				if(data.success) {
					var _html = "";
					_html += '<li superId="s-'+superId+'" class="sub_menu" style="display: block;">';
					_html += '<div class="n_arrow next"></div>';
					_html += '<ul>';
					$.each(data.menuList, function(i, value) {
						_html += '<li title="';
						_html += value.name;
						_html += '"><a href="javascript:void(0)" dataId="';
						_html += value.id;
						_html += '" url="';
						_html += value.url;
						if(value.url.indexOf('ShowReport') == -1) {
							_html += '?menuId='
								+ value.id
								+ '&hasActionConfig='
								+ value.id;
						}
						_html += '" target="_iframe">';
						_html += value.name;
						_html += '</a></li>';
					});
					_html += '</ul>';
					_html += '<div class="clear"></div>';
					_html += '<div class="n_arrow prev"></div>';
					_html += '</li>';
					var html_obj = $(_html);
					
					//点击事件
					html_obj.find("a").click(function(event) {
						$(".nav_sub a").removeClass("selected");
						navSubClick($(this));
						//return false;
					});
					$(".nav_sub .picList").append(_html);
				} else {
					$.messager.alert('系统提示','初始化菜单失败', 'error');
				}
			}
		});
    },
	
	initMainlevel = function() {  //主菜单的初始化工作 
    	Util.isKeep = false;
		$("li.mainlevel").each(function(index){ 				
				var _this = $(this);
				var a = _this.children("a");
				
				_this.mouseover(function(){  //鼠标悬停
					//二级菜单
					if (!Util.isKeep) {
						//$('li.mainlevel a').removeClass("selected");
						//a.addClass("selected");
						$('li.mainlevel a').removeClass("actived");
						a.addClass("actived");
						showNavSub(a,index); //显示二级菜单
					}
				});
				_this.click(function(){
					if (!Util.isKeep) {
						$('li.mainlevel a').removeClass("actived");
						a.addClass("actived");
						Util.isKeep = true;
					} else {
						$('li.mainlevel a').removeClass("actived");
						a.addClass("actived");
						Util.isKeep = false;
						showNavSub(a,index); //显示二级菜单
					} 
			}); 			
		});
		
		$(".picScroll-left").slide({
			nextCell:".prev",
			prevCell:".next",
			mainCell:"ul.picList",
			effect:"left",
			scroll:1,
			defaultIndex:0,
			vis:8,
			trigger:"click",
			pnLoop:false
		});
	},
	
	initNavSub = function() { //初始化子菜单
		$(".nav_sub a").click(function(event) {
			$(".nav_sub a").removeClass("selected");
			navSubClick($(this));
			return false;
		});
	},
	
	showNavSub = function(a,index) { //显示二级菜单    index父级位置
		
		$(".nav_sub .picList").children("li").hide();				
		var superId = a.attr("dataId");
		var navSubLi = $('.nav_sub li[superId="'+superId+'"]'); //寻找到superId父id的
		if (navSubLi.length > 0) { //长度大于0，则表示有二级菜单
			navSubLi.show();
			var temp = $('.nav_sub .picList li[superId="'+superId+'"]');
			if (temp.find(".tempWrap").length == 0) {
//				temp.slide({
//					nextCell:".prev",
//					prevCell:".next",
//					mainCell:"ul",
//					effect:"left",
//					scroll:1,
//					defaultIndex:0,
//					vis:9,
//					trigger:"click",
//					pnLoop:false
//				});
			}
		} else {
			addNavSub(superId.substr(2),index);
		}
	},
	
	navSubClick = function(a) {
		a.addClass("selected");
		Util.addTab(a.attr("url"), a.text(), a.attr("dataId"));
	},
	
	addNavSub = function(superId,index) {  //加载二级菜单，参数：父id   index父级位置
		$.ajax({
			type : 'GET',
			dataType : 'json',
			url : config.baseURL + 'AdminMenu/findByPid.json?parentID=' + superId,
			async : false,//取消异步请求
			success : function(data) {
				if(data.success) {
					//计算二级菜单 个数				
					var supPx=450+(index+0.5)*110; //父菜单 中心点距离左边px
					var navNum=data.menuList.length; 				
					var navPx=(navNum+1)*75/2;//二级菜单总长度的一半					
					var leftPx=supPx-navPx; //二级菜单 应该距离左边的px					
					if(leftPx<=0){ //如果是 负数
						leftPx=150;
					}
					if(leftPx>=1000){ //如果是
						leftPx=950;
					}
					var _html = "";
					_html += '<li superId="s-'+superId+'" class="sub_menu" style="display: block;margin-left:'+leftPx+'px;">'; //距离左边像素
					_html += '<div class="n_arrow next"><</div>';
					_html += '<ul>';
					$.each(data.menuList, function(i, value) {
						_html += '<li title="';
						_html += value.name;
						_html += '"><a href="javascript:void(0)" dataId="';
						_html += value.id;
						_html += '" url="';
						_html += value.url;
						if(value.url.indexOf('ShowReport') == -1) {
							_html += '?menuId='
								+ value.id
								+ '&hasActionConfig='
								+ value.id;
						}
						_html += '" target="_iframe">';
						_html += value.name;
						_html += '</a></li>';
					});
					_html += '</ul>';
					_html += '<div class="clear"></div>';
					_html += '<div class="n_arrow prev">></div>';
					_html += '</li>';
					
					var html_obj = $(_html);
					//点击事件
					html_obj.find("a").click(function(event) {
						$(".nav_sub a").removeClass("selected");
						navSubClick($(this));
						return false;
					});
					
					$(".nav_sub .picList").append(_html);
					initNavSub();
				} else {
					$.messager.alert('系统提示','初始化菜单失败', 'error');
				}
			}
		});
		
		//滚动(append之前无法计算width,导致width=0)
//		$('.nav_sub li[superId="'+superId+'"]').slide({
//			nextCell:".prev",
//			prevCell:".next",
//			mainCell:"ul",
//			effect:"left",
//			scroll:1,
//			defaultIndex:0,
//			vis:9,
//			trigger:"click",
//			pnLoop:false
//		});
		
		
	};
	
    return {
		init: function (sandbox) {
            this.api = sandbox;
        }, 
		onload: function () { //页面初始化
			userInit();
            iConfigInit();            	
            loadMenu();
            //initMainlevel();            	
            initNavSub();            
        }
	};
}());


// 标签页
$.module.register("tabs", function () {
    var api, tabsObj,
        init = function (sandbox) {
            api = sandbox;
            api.listen("nav:mainlevel", levelClickHandle);
            api.listen("nav:home-click", homeClickHandle);
            api.listen("layout:sidebar-close", sidebarClickHandle);
            api.listen("header:iconfig-click", iconfigClickHandle);
        },
        
        onload = function () {
            tabsObj = $("#tabs").tabs({
                width: "auto",
                height:$(window).height() - $("#header").height()-10
            });
            tabsObj.tabs('getSelected').panel().parent().attr("id", "panel-home");
            tabsObj.tabs('getSelected').panel('options').tab.attr("id", "tab-home");
            //tabsObj.find(".tabs-wrap").width("auto");
			//tabsObj.find(".tabs-wrap").width("auto").height("33px"); //bff            
            tabsObj.find("#tabs-tools").height("0px"); //关闭所有
            tabsObj.find("#tabs-tools").css("display","none");
            tabsCloseAll();
			
			tabsObj.find("#tab-home").click(function () {
				if (window.top.isLayoutChange) {
					tabsObj.find("#panel-home iframe").attr("src",
						tabsObj.find("#panel-home iframe").attr("src")
					);
				}
				window.top.isLayoutChange = false;
			});
            
            // 暴露框架添加tab方法
            Util.addTab = addTab;
			Util.open = addTab;
        };
        
    var addTab = function (href, title, flag) {
    	addParentSelect(flag);
        var isOpen = false,
            html = '<iframe id="frameContain-'+ flag +'" name="frameContain-'+ flag +'" src="'+ href +'" frameborder="0" width="100%" height="100%" allowTransparency="true"></iframe>';
        
        if ($("#tab-" + flag).size() > 0) {
            isOpen = true;
        }
        
        if (href != "javascript:void(0)" && href != "#") {
            if (isOpen) {
                tabsObj.find("#tab-" + flag).trigger("click");
            } else {
                tabsObj.tabs('add',{
                    idSeed : flag,
                    title: title,
                    content: html,
                    closable: true,
                    tools:[{
                        iconCls:'icon-mini-refresh',
                        handler:function(){
                            $("#frameContain-" + flag).attr("src", 
                            $("#frameContain-" + flag).attr("src"));
							// $("#panel-" + flag).width($("#panel-" + flag).parent().width());
							Util.loading({ id: "#panel-" + flag });
                        }
                    }]
                });
                
                tabsObj.find(".tabs li").last().attr("id", "tab-" + flag);
                tabsObj.find(".tabs-panels .panel").last().attr("id", "panel-" + flag);
                tabsObj.find(".tabs li").last().trigger("click");
				tabsObj.find(".tabs li").dblclick(function () {
					$(this).find(".tabs-close").trigger("click");
				});
				
				// $("#panel-" + flag).width($("#panel-" + flag).parent().width());
				Util.loading({ id: "#panel-" + flag });
				$("#frameContain-" + flag).load(function () {
					if ($(this).parents(".panel").find(".loading-panel").size() > 0) {
						$(this).parents(".panel").find(".loading-panel").remove();
						$(this).parents(".panel").find(".loading-message").remove();
						$("#panel-" + flag).width("auto");
						$("#panel-" + flag).height("100%").children('div').height("100%");
					}
				});
				
				$("#tab-" + flag).click(function() {
					var id = $(this).attr('id').split("-")[1];
					$('a[dataId]').removeClass("selected");
					$('a[dataId="'+id+'"]').addClass("selected");
					addParentSelect(flag);
				});
				
				$("#tab-" + flag + " .tabs-close").click(function() {
					$(".tabs .tabs-selected").click();
				});
				$("#tabs-tools").css("display","none"); //隐藏关闭所有
            }
        }
    }
    
    var levelClickHandle = function (eventName, moduleId, data) {
        var link = data.obj.find("a:first");
        var title = data.obj.find("div:first");
        
        addTab(link.attr("href"), title.text()?title.text():link.text(), data.id);
    };
    var addParentSelect = function(flag) {
    	     	
    	     	var parentId = $('a[dataId="'+flag+'"]').parent().parent().parent().attr("superid");
    	     	var parentA = $('a[dataId="'+parentId+'"]');
    	     	parentA.parent().parent().find("a").removeClass("actived");
    	     	parentA.addClass("actived");
    	    	if (Util.isKeep) {
    	    		Util.isKeep = false;
    	    	}
    }
    var homeClickHandle = function () {
        tabsObj.find(".tabs li").eq(0).trigger("click");
    };
    
    var iconfigClickHandle = function (eventName, moduleId, obj) {
        addTab(obj.attr("href"), obj.text(), "iconfig");
    };
    
    var closeOtherTabHandle = function (eventName, moduleId, id) {
    	tabsObj.find(".tabs li").not(id).each(function () {
            if ($(this).find(".tabs-close").size() > 0) {
                $(this).find(".tabs-close").trigger("click");
            }
        });
    	// console.log($("#"+id))
    	api.broadcast("tabs:tabs-closeOther");
    };
    
    var tabsCloseAll = function () {
    	$(".tabs-all-close").on("click", function () {        	
            var isAllClose = confirm("是否关闭除系统首页外的所有标签页？");
            if (isAllClose) {
                $(".tabs-close").trigger("click");
            } else {
                return false;
            }
        });
        
    };
    
    var sidebarClickHandle = function (eventName, moduleId, data) {
        $("#tabs .tabs-wrap").width("auto");
    };

    return {init : init, onload : onload};
}());

$(function() {
	$(".userlist p").click(function () {
		$(".user javascript:void(0)username").text($(this).text());
	});
});
